package com.dingreading.cloud.admin.service;

import com.dingreading.cloud.admin.dto.StoreDto;
import com.dingreading.cloud.admin.dto.StoreForTrainLogDto;
import com.dingreading.cloud.admin.entity.Stores;
import com.dingreading.cloud.common.base.R;
import com.dingreading.cloud.common.util.PageDto;
import com.dingreading.cloud.common.util.PageUtil;
import com.mybatisflex.core.service.IService;

import java.util.List;

/**
 * 服务层。
 *
 * @author Administrator
 * @since 2023-11-22
 */
public interface StoresService extends IService<Stores> {

    PageDto<StoreDto> pageList(
            PageUtil pageUtil, String corpUid, String keyword, Integer operateStatus, Integer enabled, Integer roleType,
            String headStaffUid, Integer activated, Integer contractStatus, Integer protectStatus
    );

    Stores getByUid(String uid);

    List<Stores> getByUids(List<String> uids);

    // 获取公司下的门店
    List<Stores> getByCorpUid(String corpUid, Integer enabled);

    // 获取所有门店的经纬度
    List<Stores> getStoreMarker();

    List<Stores> getByKeywordAndEnable(String keyword, Integer enabled);

    // 设置运营人员
    boolean updateOperateInfo(String storeUid, String operateStaffUid, String operateStaffName, String operateStaffPhone);

    boolean updateActivated(String storeUid, Integer activated);

    boolean updateEnabled(String storeUid, Integer enabled);

    boolean updateLngAndLat(String storeUid, String lng, String lat, Integer protectType, Integer protectRadius);

    // 获取附近圆形保护范围的门店
    List<Stores> getNearCycleStoreList(String longitudeMin, String longitudeMax, String latitudeMin, String latitudeMax);

    // 自营和联营门店的corpUid
    List<String> corpUidBySelfAndConsortium();

    // 自营或联营门店
    List<Stores> selfAndConsortiumList();

    // 加盟门店
    List<Stores> joinList();

    List<Stores> getProtectStoreList();

    Stores getByCorpUidAndStoreUid(String corpUid, String storeUid);

    R<Object> searchStore(String headStaffUid, String headStaffName, String keyword);

    StoreDto getDtoByUid(String storeUid);

    List<StoreForTrainLogDto> getStores(List<String> storeUids);

}
